// eslint.config.js
import js from '@eslint/js';
import globals from 'globals';
import reactPlugin from 'eslint-plugin-react';
import prettierConfig from 'eslint-config-prettier'; // Prettier
import typescriptParser from '@typescript-eslint/parser'; // TS 解析器
import typescriptPlugin from '@typescript-eslint/eslint-plugin'; // TS 插件

export default [
  // 应用推荐的JS规则
  js.configs.recommended,
  // 自定义配置对象
  {
    // 指定此配置块应用的文件类型
    files: ['**/*.{js,jsx,mjs,cjs,ts,tsx}'],
    // 忽略的文件或目录
    ignores: ['node_modules/', 'dist/', 'build/', '*.min.js'],
    // 语言选项
    languageOptions: {
      parser: typescriptParser, // 使用 TS 解析器
      ecmaVersion: 2022, // 设置 ECMAScript 版本
      sourceType: 'module', // 模块类型：'script' (CommonJS) 或 'module' (ESM)
      // 全局变量（true: 可写, false: 只读, 'off': 禁用）
      globals: {
        ...globals.browser, // 浏览器全局变量如 window, document
        ...globals.node,    // Node.js 全局变量如 process, require
        jQuery: 'readonly', // 自定义全局变量
      },
    },
    plugins: {
      // 注册react 插件
      react: reactPlugin,
      // 注册 TS 插件（可省略 'eslint-plugin-' 前缀）
      '@typescript-eslint': typescriptPlugin,
    },
    // 规则配置
    rules: {
      'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
      'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
      'no-unused-vars': 'warn',
      'semi': ['error', 'always'],
    },
  },
  // 确保 prettierConfig 放在后面，以覆盖前面可能冲突的格式化规则
  prettierConfig,
];